價格:免費
更新日期:2018-09-09
檔案大小:2.0M
目前版本:1.2
版本需求:Android 5.0 以上版本
官方網站:mailto:tylernij@gmail.com
Subcore is an root daemon that utilizes various sensors in the device to systematically apply different usage profiles. The goal is to achieve a balance based on the user's workload, rather than relying on the CPU governor to make bias assumptions about the current workload.
Subcore reads and writes to numerous kernel files to determine which profile to place the device in. These interfaces include:
• Active CPU load
• Available CPU cores
• Available CPU governors
• Available CPU frequencies
• Available GPU load
• Available GPU frequencies
• Current battery capacity
• Battery state (charging / discharging)
• Screen state
◦ State Notifier (primary choice)
◦ Power Suspend (secondary choice)
◦ Framebuffer interface (tertiary choice)
• Available device memory
• Max device memory
• Available IO schedulers
• Block readahead
• Block swappiness
• Block cache pressure
• Block dirty rations
• Random entropy
• Block overcommit
• Block page cluster
• Block dirty centisecs
• Block LMK
• Block laptop mode
• Block KSM
• Uniquely Generated Interactive Tunables
• Uniquely Generated Schedutil Tunables
Without some form of user prediction, a game could begin to lag for a moment during a loading scene, where the load requirement dips. To counteract this, Subcore implements a user prediction algorithm that attempts to maintain fluidity in heavy applications, even during moments of low load. It works by determining repetitive load averages, and sleeping longer when the load is consistent.
Since Subcore is a low-level (yet userspace) tool, it has direct access to battery statistics. When charging (and screen on), Subcore will boost your performance to the highest performing profile to ensure the user experiences UI/UX conformity, disregarding the energy limitation. Additionally, when Subcore detects the device is at 15% battery or less, it will half the loadavg, which means it requires twice as much CPU load to enter the next profile. Likewise, at 5% battery or less, Subcore locks the device into the lowest profile, which is optimized for deep sleep or idle, sacrificing a chunk of performance to battery. This setting can be disabled by toggling "Disable Power Aware" in the Subcore GUI app.
Subcore implements a new concept that I call RUPG. What makes Subcore special is the fact that it is compatible with essentially all devices. At runtime, Subcore initially gathers heaps of data to generate numerous device-specific profiles based on various factors. These generated profiles are heavily optimized for each device, so that each user achieves the most efficient software experience for the available hardware/software provided. These profiles are then saved in memory and are marked for deletion when Subcore exits. Some examples where RUPG is utilized is in the generation of device specific LMK offsets (minfree). Each device has a different RAM size, so Subcore must manually calculate the optimum LMK minfree sizes for each offset vector (VERY_LIGHT --> VERY_AGGRESSIVE). Subcore also utilizes RUPG in the production of the governor tunables. Each device has a different SOC CPU frequency table, which must be accounted for. These profiles are generated automatically by the binary, so the user doesn't need to tune anything themselves.
Subcore results in a noticeable battery life improvement, during both screen on and screen off.
I'd like to personally thank all of my testers for sacrificing their phones to my code. Each and every one of them assisted in the stability of the program itself.
@dotMiracle
@EFranz
@kdrag0n
@ASHLEY117
@Abhirams2020
@mountaser_halak
For Subcore to work properly, please ensure the following things are proper:
• Make sure Subcore is always granted root.
• Use Low-memory mode if the device does not have ZRAM or ZCACHE, or if you notice apps crashing / not opening.
Users can contact me at any time for feedback.
Gmail: tylernij@gmail.com
Telegram: @tytydraco
XDA: @tytydraco